home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / mod_devicetable.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  6KB  |  170 lines

  1. /*
  2.  * Device tables which are exported to userspace via
  3.  * scripts/table2alias.c.  You must keep that file in sync with this
  4.  * header.
  5.  */
  6.  
  7. #ifndef LINUX_MOD_DEVICETABLE_H
  8. #define LINUX_MOD_DEVICETABLE_H
  9.  
  10. #ifdef __KERNEL__
  11. #ifndef __KERNEL_ULONG_T__
  12. #include <linux/types.h>
  13. typedef unsigned long kernel_ulong_t;
  14. #endif
  15.  
  16. #define PCI_ANY_ID (~0)
  17.  
  18. struct pci_device_id {
  19.     __u32 vendor, device;        /* Vendor and device ID or PCI_ANY_ID*/
  20.     __u32 subvendor, subdevice;    /* Subsystem ID's or PCI_ANY_ID */
  21.     __u32 class, class_mask;    /* (class,subclass,prog-if) triplet */
  22.     kernel_ulong_t driver_data;    /* Data private to the driver */
  23. };
  24.  
  25.  
  26. #define IEEE1394_MATCH_VENDOR_ID    0x0001
  27. #define IEEE1394_MATCH_MODEL_ID        0x0002
  28. #define IEEE1394_MATCH_SPECIFIER_ID    0x0004
  29. #define IEEE1394_MATCH_VERSION        0x0008
  30.  
  31. struct ieee1394_device_id {
  32.     __u32 match_flags;
  33.     __u32 vendor_id;
  34.     __u32 model_id;
  35.     __u32 specifier_id;
  36.     __u32 version;
  37.     kernel_ulong_t driver_data;
  38. };
  39.  
  40.  
  41. /*
  42.  * Device table entry for "new style" table-driven USB drivers.
  43.  * User mode code can read these tables to choose which modules to load.
  44.  * Declare the table as a MODULE_DEVICE_TABLE.
  45.  *
  46.  * A probe() parameter will point to a matching entry from this table.
  47.  * Use the driver_info field for each match to hold information tied
  48.  * to that match:  device quirks, etc.
  49.  *
  50.  * Terminate the driver's table with an all-zeroes entry.
  51.  * Use the flag values to control which fields are compared.
  52.  */
  53.  
  54. /**
  55.  * struct usb_device_id - identifies USB devices for probing and hotplugging
  56.  * @match_flags: Bit mask controlling of the other fields are used to match
  57.  *    against new devices.  Any field except for driver_info may be used,
  58.  *    although some only make sense in conjunction with other fields.
  59.  *    This is usually set by a USB_DEVICE_*() macro, which sets all
  60.  *    other fields in this structure except for driver_info.
  61.  * @idVendor: USB vendor ID for a device; numbers are assigned
  62.  *    by the USB forum to its members.
  63.  * @idProduct: Vendor-assigned product ID.
  64.  * @bcdDevice_lo: Low end of range of vendor-assigned product version numbers.
  65.  *    This is also used to identify individual product versions, for
  66.  *    a range consisting of a single device.
  67.  * @bcdDevice_hi: High end of version number range.  The range of product
  68.  *    versions is inclusive.
  69.  * @bDeviceClass: Class of device; numbers are assigned
  70.  *    by the USB forum.  Products may choose to implement classes,
  71.  *    or be vendor-specific.  Device classes specify behavior of all
  72.  *    the interfaces on a devices.
  73.  * @bDeviceSubClass: Subclass of device; associated with bDeviceClass.
  74.  * @bDeviceProtocol: Protocol of device; associated with bDeviceClass.
  75.  * @bInterfaceClass: Class of interface; numbers are assigned
  76.  *    by the USB forum.  Products may choose to implement classes,
  77.  *    or be vendor-specific.  Interface classes specify behavior only
  78.  *    of a given interface; other interfaces may support other classes.
  79.  * @bInterfaceSubClass: Subclass of interface; associated with bInterfaceClass.
  80.  * @bInterfaceProtocol: Protocol of interface; associated with bInterfaceClass.
  81.  * @driver_info: Holds information used by the driver.  Usually it holds
  82.  *    a pointer to a descriptor understood by the driver, or perhaps
  83.  *    device flags.
  84.  *
  85.  * In most cases, drivers will create a table of device IDs by using
  86.  * USB_DEVICE(), or similar macros designed for that purpose.
  87.  * They will then export it to userspace using MODULE_DEVICE_TABLE(),
  88.  * and provide it to the USB core through their usb_driver structure.
  89.  *
  90.  * See the usb_match_id() function for information about how matches are
  91.  * performed.  Briefly, you will normally use one of several macros to help
  92.  * construct these entries.  Each entry you provide will either identify
  93.  * one or more specific products, or will identify a class of products
  94.  * which have agreed to behave the same.  You should put the more specific
  95.  * matches towards the beginning of your table, so that driver_info can
  96.  * record quirks of specific products.
  97.  */
  98. struct usb_device_id {
  99.     /* which fields to match against? */
  100.     __u16        match_flags;
  101.  
  102.     /* Used for product specific matches; range is inclusive */
  103.     __u16        idVendor;
  104.     __u16        idProduct;
  105.     __u16        bcdDevice_lo;
  106.     __u16        bcdDevice_hi;
  107.  
  108.     /* Used for device class matches */
  109.     __u8        bDeviceClass;
  110.     __u8        bDeviceSubClass;
  111.     __u8        bDeviceProtocol;
  112.  
  113.     /* Used for interface class matches */
  114.     __u8        bInterfaceClass;
  115.     __u8        bInterfaceSubClass;
  116.     __u8        bInterfaceProtocol;
  117.  
  118.     /* not matched against */
  119.     kernel_ulong_t    driver_info;
  120. };
  121.  
  122. /* Some useful macros to use to create struct usb_device_id */
  123. #define USB_DEVICE_ID_MATCH_VENDOR        0x0001
  124. #define USB_DEVICE_ID_MATCH_PRODUCT        0x0002
  125. #define USB_DEVICE_ID_MATCH_DEV_LO        0x0004
  126. #define USB_DEVICE_ID_MATCH_DEV_HI        0x0008
  127. #define USB_DEVICE_ID_MATCH_DEV_CLASS        0x0010
  128. #define USB_DEVICE_ID_MATCH_DEV_SUBCLASS    0x0020
  129. #define USB_DEVICE_ID_MATCH_DEV_PROTOCOL    0x0040
  130. #define USB_DEVICE_ID_MATCH_INT_CLASS        0x0080
  131. #define USB_DEVICE_ID_MATCH_INT_SUBCLASS    0x0100
  132. #define USB_DEVICE_ID_MATCH_INT_PROTOCOL    0x0200
  133.  
  134. /* s390 CCW devices */
  135. struct ccw_device_id {
  136.     __u16    match_flags;    /* which fields to match against */
  137.  
  138.     __u16    cu_type;    /* control unit type     */
  139.     __u16    dev_type;    /* device type           */
  140.     __u8    cu_model;    /* control unit model    */
  141.     __u8    dev_model;    /* device model          */
  142.  
  143.     kernel_ulong_t driver_info;
  144. };
  145.  
  146. #define CCW_DEVICE_ID_MATCH_CU_TYPE        0x01
  147. #define CCW_DEVICE_ID_MATCH_CU_MODEL        0x02
  148. #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE        0x04
  149. #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL    0x08
  150.  
  151.  
  152. #define PNP_ID_LEN    8
  153. #define PNP_MAX_DEVICES    8
  154.  
  155. struct pnp_device_id {
  156.     __u8 id[PNP_ID_LEN];
  157.     kernel_ulong_t driver_data;
  158. };
  159.  
  160. struct pnp_card_device_id {
  161.     __u8 id[PNP_ID_LEN];
  162.     kernel_ulong_t driver_data;
  163.     struct {
  164.         __u8 id[PNP_ID_LEN];
  165.     } devs[PNP_MAX_DEVICES];
  166. };
  167.  
  168. #endif /* __KERNEL__ */
  169. #endif /* LINUX_MOD_DEVICETABLE_H */
  170.